package com.blog.cmrpersonalblog.dto.sensitiveword.respnose;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 敏感词响应DTO
 */
@Data
public class SensitiveWordResponse {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 敏感词内容
     */
    private String word;

    /**
     * 敏感词类型
     */
    private String type;

    /**
     * 类型描述
     */
    private String typeDescription;

    /**
     * 严重程度（1-5）
     */
    private Integer severity;

    /**
     * 严重程度描述
     */
    private String severityDescription;

    /**
     * 过滤模式：REPLACE-替换为***，BLOCK-直接拦截
     */
    private String filterMode;

    /**
     * 过滤模式描述
     */
    private String filterModeDescription;

    /**
     * 替换文本
     */
    private String replacement;

    /**
     * 是否启用 0-禁用 1-启用
     */
    private Integer status;

    /**
     * 状态描述
     */
    private String statusDescription;

    /**
     * 描述信息
     */
    private String description;

    /**
     * 分类标签（JSON字符串）
     */
    private String tags;

    /**
     * 分类标签列表（处理后）
     */
    private List<String> tagList;

    /**
     * 匹配次数统计
     */
    private Long matchCount;

    /**
     * 最后匹配时间
     */
    private LocalDateTime lastMatchTime;

    /**
     * 创建人ID
     */
    private Long createBy;

    /**
     * 创建人名称
     */
    private String createByName;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新人ID
     */
    private Long updateBy;

    /**
     * 更新人名称
     */
    private String updateByName;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 获取类型描述
     */
    public String getTypeDescription() {
        if (type == null) return "未知";
        return switch (type) {
            case "profanity" -> "脏话";
            case "politics" -> "政治敏感";
            case "advertisement" -> "广告";
            case "violence" -> "暴力内容";
            case "illegal" -> "违法内容";
            case "spam" -> "垃圾信息";
            default -> type;
        };
    }

    /**
     * 获取严重程度描述
     */
    public String getSeverityDescription() {
        if (severity == null) return "未知";
        return switch (severity) {
            case 1 -> "轻微";
            case 2 -> "一般";
            case 3 -> "中等";
            case 4 -> "严重";
            case 5 -> "极严重";
            default -> "未知";
        };
    }

    /**
     * 获取过滤模式描述
     */
    public String getFilterModeDescription() {
        if (filterMode == null) return "未知";
        return switch (filterMode) {
            case "REPLACE" -> "替换为***";
            case "BLOCK" -> "直接拦截";
            default -> filterMode;
        };
    }

    /**
     * 获取状态描述
     */
    public String getStatusDescription() {
        if (status == null) return "未知";
        return status == 1 ? "启用" : "禁用";
    }
}